package com.example.produces.controller;

import com.example.produces.entity.Client;
import com.example.produces.mapper.ClientMapper;
import com.example.produces.service.ClientService;
import com.example.produces.service.FstockService;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
* @RequestMapping

RequestMapping是一个用来处理请求地址映射的注解，可用于类或方法上。用于类上，表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六个属性，下面我们把她分成三类进行说明。

1、 value， method；
value：     指定请求的实际地址，指定的地址可以是URI Template 模式（后面将会说明）；

method：  指定请求的method类型， GET、POST、PUT等；



2、 consumes，produces；
consumes： 指定处理请求的提交内容类型（Content-Type），例如application/json, text/html;

produces:    指定返回的内容类型，仅当request请求头中的(Accept)类型中包含该指定类型才返回；



3、 params，headers；
params： 指定request中必须包含某些参数值是，才让该方法处理。

headers： 指定request中必须包含某些指定的header值，才能让该方法处理请求。*/
@RestController
@RequestMapping("/Client")
@CrossOrigin//允许跨域请求
@Slf4j
@Transactional


//@MapperScan(basePackages = {"com.example.produce.mapper"})
public class ClientController {
    @Autowired
    private ClientService clientService;
    private Map<String,Object>map=new HashMap<>();
    @GetMapping("/findAll")
    public Map<String,Object>findAll(){
        try {
            List<Client>clients=clientService.findAll();

            map.put("records",clients);
            map.put("state",true);
            map.put("code",200);
            map.put("msg","success");
        }catch (Exception e){
            e.printStackTrace();
            map.put("state",false);
            map.put("code",500);
            map.put("msg","fail");
        }
        return map;
    }
    @GetMapping("/findOne")
    public Map<String,Object> findOne(String name){
        try {
            Client clients= clientService.findOne(name);
            map.put("records",clients);
            map.put("state",true);
            map.put("code",200);
            map.put("msg","success");
        }catch (Exception e){
            e.printStackTrace();
            map.put("state",false);
            map.put("code",500);
            map.put("msg","fail");
        }
        return map;
    }
    @PostMapping ("/add")
    public Map<String,Object> add(@RequestBody Client client){//@RequestBody 便于处理json格式的数据
        try {
            clientService.Add(client);
            map.put("state",true);
            map.put("code",200);
            map.put("msg","success");
        }catch (Exception e){
            e.printStackTrace();
            map.put("state",false);
            map.put("code",500);
            map.put("msg","filed");
        }
        return map;
    }
    @PostMapping ("/upData")
    public Map<String,Object> upData(@RequestBody Client client){
        try {
            clientService.upDate(client);
            map.put("state",true);
            map.put("code",200);
            map.put("msg","success");
        }catch (Exception e){
            e.printStackTrace();
            map.put("state",false);
            map.put("code",500);
            map.put("msg","fail");
        }
        return map;
    }
}
